/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package adbus.models;

import adbus.libraries.Database;
import adbus.libraries.ORM;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author rafal
 */
/**główna klasa Format*/
public class Format extends ORM {

    /**metoda pobierająca formaty i dodająca je do listy*/
    public LinkedList<Format> pobierz() {
        LinkedList<Format> formats = new LinkedList<Format>();
        try {
            result = Database.querySelect(basicQuery() + getWhere(), filtersval);
            while(result.next()) {
                Format f = new Format();
                f.zaladuj(result);
                formats.add(f);
            }

        } catch (SQLException ex) {
            Logger.getLogger(Format.class.getName()).log(Level.SEVERE, null, ex);
        }
        return formats;
    }
    @Override
    /**metoda wzracająca wszystkie dane z tabeli Format*/
    public String basicQuery() {
        return "SELECT * FROM Format";
    }
    @Override
    /**metoda zwracająca nazwę w postaci Stringa*/
    public String toString() {
        return nazwa;
    }
    /**metoda wstawiająca dane z tabeli Format do odpowiednich zmiennych*/
    public void zaladuj(ResultSet set) throws SQLException {
        if(set.isBeforeFirst()) set.first();
        id_Format = set.getInt("id_Format");
        nazwa = set.getString("nazwa");
        opis = set.getString("opis");
    }
    /**zmienna przechowująca id_Format*/
    public Integer id_Format;
    /**zmienna przechowująca nazwe formatu*/
    public String nazwa;
    /**zmienna przechowująca opis formatu*/
    public String opis;

    /**metoda filtrująca formaty wg id pojazdu*/
    void setVehicleFilter(Integer id_pojazdu) {
        filters.put("v", "id_Format IN (SELECT id_Format FROM Format_pojazd WHERE id_pojazd = ?)");
        filtersval.put("v", id_pojazdu);
    }

    /**metoda zapisująca nowy format do tabeli Format*/
    public void zapisz() {
        String q = "INSERT INTO `Format`(`nazwa`) VALUES(?)";
        LinkedHashMap<String,Object> map = new LinkedHashMap<String, Object>();
        map.put("1", nazwa);
        super.zapisz(q, "id_Format", map);
    }

    /**metoda filtrująca formaty wg przypisanych do nich reklam( po id_reklama)*/
    void setAdvertFilter(Integer id_reklama) {
        filters.put("id_r","id_Format IN (SELECT id_Format FROM Reklama_Format WHERE id_reklama = ?)");
        filtersval.put("id_r", id_reklama);
    }
}
